//指标名称和阀值divid对应关系
var ind_type={'性能':'perf_','容量':'capa_','进程':'proc_','状态':'stat_','数据库':'db_'};

//关闭
function closeIndicators(){
	var index = parent.layer.getFrameIndex(window.name);
	parent.layer.close(index);
	
}

$(function(){
	//部件名称点击右边图标显示或隐藏
    $('.imgbtn').click(function(){
        $('.box_accessories').toggle();
    });
    $(document).click(function(e) {
        var pointerbtn=$(e.target).closest('[class=imgbtn],[class=box_accessories]').length;
        if(pointerbtn==0){
            $('.box_accessories').stop().hide();
        }
    });
    //点击图标列表切换图标
    $('.box_accessories>a').click(function(){
        var imgurl=$(this).find('img').attr('src');
        $('.imgbtn').find('img').attr('src',imgurl)
    });
	var data=eval($("#partNames").val());
	$("#partName").focus().autocomplete(data);
});

/**
 * 验证指标非空
 */
function checkIndNotNull(target){
	$(target).attr("style","border-color: ;");
	$(target).attr("title","");
	if(($(target).val().trim())==""){
		$(target).attr("style","border-color:red;");
		$(target).next().html("*不能为空！");
		return false;
	}else{
		$(target).attr("style","border-color: ;");
		$(target).next().html("*");
		return true;
	}
}
/**
 * 指标验证
 */
function checkBecodeExist(){
	var checkBecodeFlag = false;
	var code = $("#indicatorsCode").val().trim();
	if(code!=""){
		reg=/^[a-zA-Z0-9_]+$/;
		 if(!reg.test(code)){
			$("#indicatorsCode").attr("style","border-color:red;");
			$("#regularTip").text("*必须为数字、字母、下划线！");
			return false;
	     }else{
	    	 $.ajax({
	 			url:"checkIndicatorCode.do",
	 			type:"post",
	 			async: false,
	 			dataType: 'json',
	 			data:{
	 				"strCode":$("#indicatorsCode").val(),
	 				"indicatorId":$("#indicatorId").val()
	 			},
	 			success:function(result){
	 				if(result.flag){
	 					$("#indicatorsCode").attr("style","border-color:red;");
	 					$("#regularTip").html("*指标项已存在！");
	 					checkBecodeFlag = false;
	 				}else{
	 					$("#indicatorsCode").attr("style","border-color: ;");
	 					$("#regularTip").html("*");
	 					checkBecodeFlag = true;
	 				}
	 			}
	 		});
	     }
	}else{
		$("#indicatorsCode").attr("style","border-color:red;");
		$("#regularTip").text("*不能为空！");
		checkBecodeFlag = false;
	}
	return checkBecodeFlag;
}
//表格中黑白名单索引
var typeIndex=0;
/**
 * 添加关键字
 * @param field button按钮
 * @param platFormId 平台id
 */
function addWarningKeyWord(tbodyId){
	var htmlTr ='<tr>'+
				    '<td><input type="text" onblur="checkNameList(this);" style="border:1px #FFFFFF solid;width:96%!important;margin:0!important;"/></td>'+
				    '<td>'+
				    	//21a,21b,21c对应码表中的值
				        '<input type="radio" value="21a" onchange="contralStateLevel(this);" onblur="checkNotNull(this);" checked name="'+tbodyId+'_type'+typeIndex+'"/>黑名单&nbsp;&nbsp;'+
				        '<input type="radio" value="21b" onchange="contralStateLevel(this);" onblur="checkNotNull(this);" name="'+tbodyId+'_type'+typeIndex+'"/>白名单&nbsp;&nbsp;'+
				        '<input type="radio" value="21c" onchange="contralStateLevel(this);" onblur="checkNotNull(this);" name="'+tbodyId+'_type'+typeIndex+'"/>未知'+
				    '</td>'+
				    '<td>'+
				    	'<input type="radio" value="1" onblur="checkNotNull(this);" name="'+tbodyId+'_leval'+typeIndex+'"/>warning&nbsp;&nbsp;'+
				        '<input type="radio" value="2" onblur="checkNotNull(this);" name="'+tbodyId+'_leval'+typeIndex+'"/>error&nbsp;&nbsp;'+
				        '<input type="radio" value="3" onblur="checkNotNull(this);" name="'+tbodyId+'_leval'+typeIndex+'"/>critical'+
				    '</td>'+
				    '<td>'+
                		'<i class="Del content_current" onclick="$(this).closest(\'tr\').remove();" title="删除"></i>'+
                	'</td>'+
				'</tr>';
	typeIndex++;
	$("#"+tbodyId).append(htmlTr);
}
/**
 * 控制状态黑白名单，当选择白名单和未知是禁用告警级别按钮
 * @param tg
 */
function contralStateLevel(tg){
	var type = $(tg).val();
	if(type=='21b'||type=='21c'){
		$(tg).parent().next().find("input").each(function(){
			$(this).attr("checked",false);
			$(this).attr("disabled","disabled");
		});
	}else if(type=='21a'){
		$(tg).parent().next().find("input").each(function(){
			if($(this).val()==1){
				$(this).attr("checked",true);
			}
			$(this).removeAttr("disabled");
		});
	}
	
}
/**
 * 校验黑白名单是否重复
 * @param field
 */
function checkNameList(field){
	//非空校验
	if(field.value==null||field.value==''){
		$(field).attr("style","border:1px #FF0000 solid;width:96%!important;margin:0!important;");
		$(field).attr("title","关键字不能为空");
	}else{
		$(field).attr("style","border:1px #FFFFFF solid;width:96%!important;margin:0!important;");
		$(field).attr("title","");
	}
	//是否重复
	$(field).parent().parent().siblings().each(function(){
		var name = $(this).find("td:first-child").find("input").val();
		if($(field).val()==name){
			$(field).attr("style","border:1px #FF0000 solid;width:96%!important;margin:0!important;");
			$(field).attr("title","同一平台下黑白名单不能重复");
			$(this).find("td:first-child").find("input").attr("style","border:1px #FF0000 solid;width:96%!important;margin:0!important;");
			$(this).find("td:first-child").find("input").attr("title","同一平台下黑白名单不能重复");
			return false;
		}else{
			$(field).attr("style","border:1px #FFFFFF solid;width:96%!important;margin:0!important;");
			$(field).attr("title","");
			$(this).find("td:first-child").find("input").attr("style","border:1px #FFFFFF solid;width:96%!important;margin:0!important;");
			$(this).find("td:first-child").find("input").attr("title","");
		}
	});
}
/**
 * 阀值范围控制
 */
function rangeContral(field){
	var element = $(field).parent().parent().parent().next().find("input[id*='_from_']").eq(0);
	if(field.id.indexOf("_to_")>0&&element.length!=0&&$(element).attr("id").indexOf('lower')==-1){
		if(element.length>0&&field.value!=null&&field.value!=''){
			element.val(field.value);
			element.blur();
		}
	}
}
/**
 * 阀值范围校验
 * @param field
 * @return true,false
 */
function rangeCheck(field){
	var value = Number(field.value);
	if(field.id.indexOf("_from_")>0){
		var toValue = Number($(field).next().val());
		if(value>toValue){
			$(field).attr("style","border-color:red;");
			$(field).attr("title","请校验阀值范围");
			$(field).next().attr("style","border-color:red;");
			$(field).next().attr("title","请校验阀值范围");
		}else{
			$(field).removeAttr("style");
			$(field).removeAttr("title");
			$(field).next().removeAttr("style");
			$(field).next().removeAttr("title");
		}
		var uprange = $(field).closest(".content_group").prev();
		if(uprange.length>0){
			var upto=uprange.find("input[id*='_to_']").eq(0);
			if(value<Number(upto.val())){
				$(field).attr("style","border-color:red;");
				$(field).attr("title","请校验阀值范围");
				upto.attr("style","border-color:red;");
				upto.attr("title","请校验阀值范围");
			}else{
				$(field).removeAttr("style");
				$(field).removeAttr("title");
				upto.removeAttr("style");
				upto.removeAttr("title");
			}
		}
	}else if(field.id.indexOf("_to_")>0){
		var fromValue = Number($(field).prev().val());
		if(value<fromValue){
			$(field).attr("style","border-color:red;");
			$(field).attr("title","请校验阀值范围");
			$(field).prev().attr("style","border-color:red;");
			$(field).prev().attr("title","请校验阀值范围");
		}else{
			$(field).removeAttr("style");
			$(field).removeAttr("title");
			$(field).prev().removeAttr("style");
			$(field).prev().removeAttr("title");
		}
	}
}
/**
 * 校验
 * @param field
 */
function volidateRange(field){
	checkNotNull(field);
	if($(field).attr("title")!=null&&$(field).attr("title")!=''){
		return;
	}
	checkPInt(field);
	if($(field).attr("title")!=null&&$(field).attr("title")!=''){
		return;
	}
	rangeContral(field);
	rangeCheck(field);
	if($(field).attr("title")!=null&&$(field).attr("title")!=''){
		return;
	}
}
/**
 * 间隔时间校验
 */
function volidateInterval(field){
	checkNotNull(field);
	if($(field).attr("title")!=null&&$(field).attr("title")!=''){
		return;
	}
	checkPInt(field);
	if($(field).attr("title")!=null&&$(field).attr("title")!=''){
		return;
	}
}
/**
 * 添加指标
 */
function saveIndicators(){
	//所有平台id
	var platForms = [];
	//默认全部选中
	$("#platform").find("input").not("input:checked").each(function(){
		platForms.push($(this).val());
	})
	//获取指标名称
	var indTypeName = $("#indTypeName").val();;
	//指标对应阀值div标示code
	var indCode=ind_type[indTypeName];
	//校验
	if(!saveCheck(platForms,indCode)){
		return;
	}
	//获取阀值
	var thresholdMsg = getIndThresholdMsg();
	$.ajax({
		url:"editIndicator.do",
		type:"post",
		async: false,
		dataType: 'json',
		data:{
			"indicatorId":$("#indicatorId").val(),
			"partsPO.name":$("#partName").val(),
			"partsPO.imageurl":$(".tubiao").attr("src"),
			"name":$("#indicatorsName").val(),
			"bcode":$("#indicatorsCode").val(),
			"lookupCdePO.lookupCode":$("#indicatorsType").val(),
			"baseLine":$("input[name='baseLine']:checked:visible").val(),
			"processType":$("input[name='processType']:checked").val(),
			//阀值范围
			"thresholdRanges":JSON.stringify(thresholdMsg['thresholdRanges']),
			//黑白名单
			"thresholdList":JSON.stringify(thresholdMsg['thresholdList'])
		},
		beforeSend:function(){
			$("#press_btn1").attr("disabled","disabled");
		},
		error:function(data){  
			layer.msg('出错了！！',{time:2000});
	    },
		success:function(result){
			if(result.flag){
				layer.msg('保存成功', {time:1000});
				parent.flashParts();
				parent.searchPaging();
				var index = parent.layer.getFrameIndex(window.name);
				setTimeout("parent.layer.close("+index+");",1000);
				
			}else{
				layer.msg('保存失败！', {time:1000});
				$("#press_btn1").removeAttr("disabled");
			}
		}
	}); 
}
/**
 * 保存之前校验信息
 */
function saveCheck(platForms,indCode){
	//验证
	if(!checkIndNotNull($("#indicatorsName"))){
		layer.msg('指标名称不能为空',{time:2000});
		return false;
	}
	if(!checkIndNotNull($("#indicatorsCode"))){
		layer.msg('编码不能为空',{time:2000});
		return false;
	}
	if(!checkIndNotNull($("#partName"))){
		layer.msg('部件名称不能为空',{time:2000});
		return false;
	}
	if(!checkBecodeExist()){
		layer.msg('编码已存在',{time:2000})
		return false;
	}
	//验证结果判断
	var tip = $("#regularTip").html()+$("#indicatorsNameTip").html()+$("#partNameTip").html();
	//每个tip都没有错误,提示信息tip=***
	if(tip.length!=3){
		return false;
	}
	//校验阀值和黑白名单
	for(var i=0;i<platForms.length;i++){
		$("#"+indCode+platForms[i]).find("input[type='text']:visible").blur();
	}
	var checkFlag = true;
	var tipMsg = "";
	//判断校验是否成功
	$("div[id*='"+indCode+"']").each(function(){
		if($(this).find("input[style='border-color:red;']:visible").length>0){
			checkFlag=false;
			tipMsg = "请校验阀值信息";
			return false;//中断each循环
		}
		//黑白名单校验
		if($(this).find("input[style='border:1px #FF0000 solid;width:96%!important;margin:0!important;']:visible").length>0){
			checkFlag=false;
			tipMsg = "请校验黑白名单信息";
			return false;//中断each循环;
		}
		//黑白名单个数不能为零
		if($(this).find("input[type='text']:visible").length==0){
			checkFlag=false;
			tipMsg="平台下黑白名单不能为空";
			return false;//中断each循环;
		}
	})
	if(!checkFlag){
		layer.msg(tipMsg,{time:2000});
		return false;
	}
	return true;
}

/**
 * 获取指标阀值或黑白名单信息
 * @returns {___anonymous14576_14639}
 */
function getIndThresholdMsg(){
	//阀值范围
	var thresholdRanges=[];
	//黑白名单
	var thresholdList=[];
	//thresholdRange阀值范围和thresholdList黑白名单
	//thresholdRange中存放HhmDefaultThreshold，thresholdList中存放HhmThresholdState
	var thresholdMsg={'thresholdRanges':thresholdRanges,'thresholdList':thresholdList};
	//获取指标名称
	var indTypeName = $('#indTypeName').val();
	//指标对应阀值div标示indCode
	var indCode=ind_type[indTypeName];
	
	//未选中的平台id，有单独的默认阀值
	var noCheckPlatforms = [];
	//选中的平台id，使用默认阀值
	var checkedPlatforms = [];
	//修改页面平台隐藏，且默认全部未勾选
	$("#platform").find("input").each(function(){
		if($(this).attr("checked")=='checked'){
			checkedPlatforms.push($(this).val());
		}else{
			noCheckPlatforms.push($(this).val());
		}
	})
	if(indCode=='proc_'){
		//默认值处理
		//进程性能
		if($("input[name='processType']:checked").val()=='93f'){
			//默认阀值对象
			var procThresholdDefault = getPerfThreold(indCode+'default');
			//循环勾选的平台
			for(var i=0;i<checkedPlatforms.length;i++){
				var tr = $.extend({'platformThresholdId':checkedPlatforms[i]},procThresholdDefault);
				thresholdRanges.push(tr);
			}
		//进程状态	
		}else if($("input[name='processType']:checked").val()=='93b') {
			var procNameListDefault = getstateList(indCode+'default');
			for(var i=0;i<checkedPlatforms.length;i++){
				for(var j=0;j<procNameListDefault.length;j++){
					var tr = $.extend({'platformId':checkedPlatforms[i]},procNameListDefault[j]);
					thresholdList.push(tr);
				}
			}
			
		}
		//未勾选的平台处理
		for(var i=0;i<noCheckPlatforms.length;i++){
			//进程性能
			if($("input[name='processType']:checked").val()=='93f'){
				var procThreshold=getPerfThreold(indCode+noCheckPlatforms[i]);
				procThreshold = $.extend({'platformThresholdId':noCheckPlatforms[i]},procThreshold);
				thresholdRanges.push(procThreshold);
			}else if($("input[name='processType']:checked").val()=='93b'){
				var procNameList=getstateList(indCode+noCheckPlatforms[i]);
				for(var j=0;j<procNameList.length;j++){
					var tr = $.extend({'platformId':noCheckPlatforms[i]},procNameList[j]);
					thresholdList.push(tr);
				}
			}
		}
	}else if(indCode=='perf_'){
		//勾选的平台使用默认值处理
		var perfThresholdDefault = getPerfThreold(indCode+'default');
		for(var i=0;i<checkedPlatforms.length;i++){
			var tr = $.extend({'platformThresholdId':checkedPlatforms[i]},perfThresholdDefault);
			thresholdRanges.push(tr);
		}
		//未勾选的平台值单独获取
		for(var i=0;i<noCheckPlatforms.length;i++){
			var perfThreshold=getPerfThreold(indCode+noCheckPlatforms[i]);
			perfThreshold = $.extend({'platformThresholdId':noCheckPlatforms[i]},perfThreshold);
			thresholdRanges.push(perfThreshold);
		}
	}else if(indCode=='capa_'){
		//勾选的平台使用默认值处理
		var capaThresholdDefault = getCapacOrDBThreshold(indCode+'default');
		for(var i=0;i<checkedPlatforms.length;i++){
			var tr = $.extend({'platformThresholdId':checkedPlatforms[i]},capaThresholdDefault);
			thresholdRanges.push(tr);
		}
		//未勾选的平台值单独获取
		for(var i=0;i<noCheckPlatforms.length;i++){
			var capaThreshold=getCapacOrDBThreshold(indCode+noCheckPlatforms[i]);
			capaThreshold = $.extend({'platformThresholdId':noCheckPlatforms[i]},capaThreshold);
			thresholdRanges.push(capaThreshold);
		}
	}else if(indCode=='db_'){
		//勾选的平台使用默认值处理
		var capaThresholdDefault = getCapacOrDBThreshold(indCode+'default');
		thresholdRanges.push(capaThresholdDefault);
	}else if(indCode=='stat_'){
		//勾选的平台使用默认值处理
		var stateNameListDefault = getstateList(indCode+'default');
		for(var i=0;i<checkedPlatforms.length;i++){
			for(var j=0;j<stateNameListDefault.length;j++){
				var tr = $.extend({'platformId':checkedPlatforms[i]},stateNameListDefault[j]);
				thresholdList.push(tr);
			}
		}
		//未勾选的平台值单独获取
		for(var i=0;i<noCheckPlatforms.length;i++){
			var stateNameList=getstateList(indCode+noCheckPlatforms[i]);
			for(var j=0;j<stateNameList.length;j++){
				var tr = $.extend({'platformId':noCheckPlatforms[i]},stateNameList[j]);
				thresholdList.push(tr);
			}
		}
	}
	
	return thresholdMsg;
}

/**
 * 性能获取阀值信息
 * @param divId 阀值或黑白名单div的id
 * @param platFormId 平台id
 * @returns com.holystone.orca.hhm.mybatis.model.HhmDefaultThreshold
 */
function getPerfThreold(divId){
	var tr={};
	tr.bcode=$("#indicatorsCode").val();
	tr.warningInterval=$("#"+divId).find("input[id*='_warning_intime']").eq(0).val();
	tr.warningCounts=$("#"+divId).find("input[id*='_warning_num']").eq(0).val();
	tr.waringFrom=$("#"+divId).find("input[id*='_warning_from']").eq(0).val();
	tr.waringTo=$("#"+divId).find("input[id*='_warning_to']").eq(0).val();
	
	tr.errorInterval=$("#"+divId).find("input[id*='_error_intime']").eq(0).val();
	tr.errorCounts=$("#"+divId).find("input[id*='_error_num']").eq(0).val();
	tr.errorFrom=$("#"+divId).find("input[id*='_error_from']").eq(0).val();
	tr.errorTo=$("#"+divId).find("input[id*='_error_to']").eq(0).val();
	
	tr.criticalInterval=$("#"+divId).find("input[id*='_critical_intime']").eq(0).val();
	tr.criticalCounts=$("#"+divId).find("input[id*='_critical_num']").eq(0).val();
	tr.criticalFrom=$("#"+divId).find("input[id*='_critical_from']").eq(0).val();
	tr.criticalTo=$("#"+divId).find("input[id*='_critical_to']").eq(0).val();
	
	tr.lowerWarningInterval=$("#"+divId).find("input[id*='_lower_intime']").eq(0).val();
	tr.lowerWarningCounts=$("#"+divId).find("input[id*='_lower_num']").eq(0).val();
	tr.lowerWarningFrom=$("#"+divId).find("input[id*='_lower_from']").eq(0).val();
	tr.lowerWarningTo=$("#"+divId).find("input[id*='_lower_to']").eq(0).val();
	return tr;
}

/**
 * 获取数据库或容量阀值信息
 * @param divId 阀值或黑白名单div的id
 * @returns com.holystone.orca.hhm.mybatis.model.HhmDefaultThreshold
 */
function getCapacOrDBThreshold(divId){
	var tr={};
	tr.bcode=$("#indicatorsCode").val();
	tr.waringFrom=$("#"+divId).find("input[id*='_warning_from']").eq(0).val();
	tr.waringTo=$("#"+divId).find("input[id*='_warning_to']").eq(0).val();
	
	tr.errorFrom=$("#"+divId).find("input[id*='_error_from']").eq(0).val();
	tr.errorTo=$("#"+divId).find("input[id*='_error_to']").eq(0).val();
	
	tr.criticalFrom=$("#"+divId).find("input[id*='_critical_from']").eq(0).val();
	tr.criticalTo=$("#"+divId).find("input[id*='_critical_to']").eq(0).val();
	
	tr.lowerWarningFrom=$("#"+divId).find("input[id*='_lower_from']").eq(0).val();
	tr.lowerWarningTo=$("#"+divId).find("input[id*='_lower_to']").eq(0).val();
	return tr;
}
/**
 * 获取状态黑白名单
 * @param divId 黑白名单所在div的id
 * @param platFormId 平台id
 * @returns {Array}com.holystone.orca.hhm.mybatis.model.HhmThresholdState
 */
function getstateList(divId){
	var thresholdList = [];
	$("#"+divId).find("tbody").find("tr").each(function(){
		var ts = {};
		ts.bcode=$("#indicatorsCode").val();
		ts.keyWords=$(this).find("input[type='text']").eq(0).val();
		ts.alarmLevel=$(this).find("input[type='radio'][name*='_leval']:checked").eq(0).val();
		ts.stateType=$(this).find("input[type='radio'][name*='_type']:checked").eq(0).val();
		thresholdList.push(ts);
	})
	return thresholdList;
}